home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet internetowy
/
Przegladarki internetowe
/
Maxthon 1.5.8 b 120
/
mcombo.exe
/
Plugin
/
Techorati Sidebar
/
scripts
/
Technorati.js
< prev
next >
Wrap
Text File
|
2006-10-24
|
11KB
|
395 lines
/**************************
Technorati Sidebar
By Neo101
Version 1.0.0
**************************/
checkSettingsFile()
var itemsOnPage = parseInt( readSetting('itemsOnPage', '10') )
var showLoadingMessage = readSetting('showLoadingMessage', '1')
var searchResults = new Array()
var element
var start
var xmlhttp
var API_KEY = '1136bb50c3675d2d72265e0022ef355d'
var feedLimit = readSetting('feedLimit', '20')
var timer
var intervalTime = readSetting('intervalTime', '15') // in minutes
var enableInterval = readSetting('enableInterval', '0')
var authority = readSetting('authority', 'a1')
var language = readSetting('language', 'en')
window.onload = function(){
setAutoUpdateText()
document.getElementById('keywords').select()
setSelectBox('authority')
setSelectBox('language')
}
function search(noClear){
var keywords = encodeURIComponent( document.getElementById('keywords').value )
if(keywords == ''){
document.getElementById('searchResults').innerHTML = 'Please enter a keyword!'
document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
return
}
var format = 'RSS'
var language = document.getElementById('language').value
var authority = document.getElementById('authority').value
var url = 'http://api.technorati.com/search?key=' + API_KEY + '&format=' + format + '&limit=' + feedLimit +
'&authority=' + authority + '&language=' + language + '&partnerid=400'+'&query=' + keywords
element = 'searchResults'
start = 0
if(noClear == null){
document.getElementById('searchResults').innerHTML = 'Loading....<br>This could take a while...'
document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
if(enableInterval == '1'){
if(timer){
window.clearInterval(timer)
}
timer = window.setInterval('search(true)', intervalTime * 1000 * 60)
}
}
loadXMLDoc(url, onResponseView)
}
function blogInfoSearch(){
var url = encodeURIComponent( document.getElementById('url').value )
if(url == ''){
document.getElementById('blogInfo').innerHTML = 'Please enter a keyword!'
return
}
if(url.search(/\./) == -1){
showError('Please enter a valid domain or URL')
return
}
var format = 'RSS'
var url = 'http://api.technorati.com/bloginfo?key=' + API_KEY + '&format=' + format + '&url=' + url
element = 'blogInfo'
start = 0
document.getElementById('blogInfo').innerHTML = 'Loading....<br>This could take a while...'
loadXMLDoc(url, onResponseBlogInfo)
}
function loadXMLDoc(url, stateChange){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
xmlhttp.onreadystatechange = stateChange;
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("User-Agent","Maxthon Technorati Sidebar 1.0")
xmlhttp.send(null)
}
function checkReadyState(obj){
if(obj.readyState == 4){
if(obj.status == 200 || obj.status == 201){
return true
}
if(obj.status == 0){
if(element == 'blogInfo'){
blogInfoSearch()
} else {
search()
}
return false
}
else{
showError(obj.status + ' ' + obj.responseText)
}
}
return false
}
function onResponseView(){
if( ! checkReadyState(xmlhttp) ){
return
}
var responseXML = xmlhttp.responseXML
if(responseXML == null){
showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
return
}
var response = ''
var rssFeeds = new Array()
items = responseXML.getElementsByTagName("item")
if(items && items.length != 0 ){
for(var j=0; j < items.length; j++) {
addFeedItem(items[j], rssFeeds)
}
}
else{
response += '<b>Nothing found</b>'
}
response += writeFeedHtml( rssFeeds )
if(rssFeeds.length == 0){
response += '<b>Nothing found</b>'
}
document.getElementById(element).innerHTML = response
eval( element + ' = rssFeeds ')
if(rssFeeds.length > 0){
createNextPreviousLinks()
}
}
function onResponseBlogInfo(){
if( ! checkReadyState(xmlhttp) ){
return
}
var responseXML = xmlhttp.responseXML
if(responseXML == null){
showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
return
}
var title = responseXML.getElementsByTagName("title")[2].text
if(title == ''){
var response = 'No information found about this URL'
response += '<br><a href="#" onclick="currentSiteDomainOnly()">Try domain name only</a>'
} else {
var response = 'Result for ' + title
var inboundblogs = responseXML.getElementsByTagName("tapi:inboundblogs")[0].text
var inboundlinks = responseXML.getElementsByTagName("tapi:inboundlinks")[0].text
var rank = responseXML.getElementsByTagName("tapi:rank")[0].text
if(responseXML.getElementsByTagName("comments")[0]){
var link = responseXML.getElementsByTagName("comments")[0].text
}
if(responseXML.getElementsByTagName("tapi:rssurl")[0]){
var rssurl = responseXML.getElementsByTagName("tapi:rssurl")[0].text
}
if(responseXML.getElementsByTagName("tapi:atomurl")[0]){
var atomurl = responseXML.getElementsByTagName("tapi:atomurl")[0].text
}
if(responseXML.getElementsByTagName("tapi:firstname")[0]){
var firstname = responseXML.getElementsByTagName("tapi:firstname")[0].text
}
if(responseXML.getElementsByTagName("tapi:lastname")[0]){
var lastname = responseXML.getElementsByTagName("tapi:lastname")[0].text
}
if(responseXML.getElementsByTagName("tapi:thumbnailpicture")[0]){
var pictureURL = responseXML.getElementsByTagName("tapi:thumbnailpicture")[0].text
}
if(responseXML.getElementsByTagName("guid")[0]){
var profileURL = responseXML.getElementsByTagName("guid")[0].text
}
response += '<br><b>Blogs linking here:</b> ' + inboundblogs
response += '<br><b>Links here:</b> ' + inboundlinks
response += '<br><b>Blog Rank:</b> ' + rank
if(firstname && lastname){
response += '<br><b>Owned by:</b> ' + firstname + ' ' + lastname
}
if(profileURL){
response += '<br><a href="' + profileURL + '" target=_blank>Profile</a>'
}
if(pictureURL){
response += '<br><img src="' + pictureURL + '">'
}
if(link){
response += '<br><a href="' + link + '" target=_blank>More info</a>'
}
if(rssurl){
response += '<br><a href="' + rssurl + '" target=_blank>RSS url</a>'
}
if(atomurl){
response += '<br><a href="' + atomurl + '" target=_blank>ATOM url</a>'
}
}
document.getElementById(element).innerHTML = response
}
function writeFeedHtml( array){
var response = '<ul>'
for(var i=0; i<array.length && i<itemsOnPage; i++){
var item = array[i]
response += '<li>'+
//'<a href="' + item.link + '" target=_blank class=title title="' + item.tooltip + '" '+
// 'onmouseover="showLink(\'' + item.link + '\')" onmouseout="hideLink()">' + item.title + '</a>' +
'<h3>' +
'<span onclick="expandCollapse(this.parentElement.nextSibling.id)" class=expandCollapse>' +
item.title +
'</span>' +
' <a href="' + item.link + '" target=_blank title="' + item.link + '">»</a></h3>' +
'<div style="display:none" id="item' + i + '">' + item.tooltip + '</div>'
'<\/li>'
}
response += '<\/ul>'
return response
}
function addFeedItem( item , array){
var title = ''
var link = ''
var description = ''
var pubDate = ''
var inboundblogs = ''
var inboundlinks = ''
//var linkcreated = ''
var nodes = item.childNodes
for(var i=0; i < nodes.length; i++){
var tagName = nodes(i).tagName
var tagText = nodes(i).text
if(tagName=='title'){
title = replacer(tagText)
}
else if(tagName=='link'){
link = tagText
}
else if(tagName=='description'){
description = replacer(tagText)
}
else if(tagName=='tapi:inboundblogs'){
inboundblogs = replacer(tagText)
}
else if(tagName=='tapi:inboundlinks'){
inboundlinks = replacer(tagText)
}
/* else if(tagName=='tapi:linkcreated'){
linkcreated = replacer(tagText)
} */
else if(tagName=='pubDate'){
pubDate = replacer(tagText)
}
}
var displayedLink = link.replace('http://', '').replace(/\/.*/,'')
var tooltip = '<b>Link:</b> <a href="' + link + '" target=_blank title="' + link + '">' + displayedLink + '</a>'
tooltip += '<br><b>Description:</b> ' + description
tooltip += '<br><b>Date:</b> ' + pubDate
//tooltip += '<br><b>Created:</b> ' + linkcreated
tooltip += '<br><b>Links:</b> ' + inboundlinks
tooltip += '<br><b>Blogs:</b> ' + inboundblogs
if(title != '' && link != ''){
array.push( {'title':title,
'link':link,
'description':description,
'tooltip':tooltip,
'pubDate':pubDate
} )
}
}
function createNextPreviousLinks(){
var next = start + itemsOnPage
var previous = start - itemsOnPage
var nextPreviousHTML = ''
if( previous >= 0 ){
nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + previous + ')" class=prevNext>« Previous</a>'
}
if( previous >= 0 && next < feedLimit ){
nextPreviousHTML += '<span style="width:30px"></span>'
}
if( next < feedLimit ){
nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + next + ')" class=prevNext>Next »</a>'
}
document.getElementById(element + 'NextPreviousHead').innerHTML = nextPreviousHTML
document.getElementById(element + 'NextPreviousBottom').innerHTML = nextPreviousHTML
}
function showFeedPart(element, start){
eval('var array = ' + element)
top.start = start
top.element = element
array = array.slice(start,start + itemsOnPage)
var response = '<ul>'
response += writeFeedHtml( array )
response += '</ul>'
document.getElementById(element).innerHTML = response
createNextPreviousLinks()
}
function replacer(s){
return s.replace(/&/g,'&').replace(/"|"/g,'');
}
function setSelectBox(id, feed){
var selectElement = document.getElementById(id)
for(var i=0; i<selectElement.options.length; i++){
if( eval('selectElement.options[i].value.search(' + feed + ') != -1') ){
selectElement.selectedIndex = i
}
}
}
function setAutoUpdateText(){
var text
if(enableInterval == '0'){
text = 'Enable AutoRefresh'
} else {
text = 'Disable AutoRefresh'
}
document.getElementById('autoRefreshButton').innerHTML = text
}
function setSelectBox(id){
var selectElement = document.getElementById(id)
for(var i=0; i<selectElement.options.length; i++){
if( eval('selectElement.options[i].value == "' + eval(id) + '"') ){
selectElement.selectedIndex = i
return
}
}
}